<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="iso-8859-1">
        <title>Testing mousewheel plugin</title>

        <style>
            html {
                font: 13px Arial, sans-serif;
            }

            #stage {
                color: #fff;
                position: relative;
                zoom: 1;
            }

            #test1, #test2, #test3, #test4, #test5, #test6, #test7 {
                float: left;
            }

            #test1 {
                background-color: #000;
                width: 120px;
                height: 100px;
            }

            #test2 {
                background-color: #333;
                width: 120px;
                height: 100px;
            }

            #test3 {
                background-color: #666;
                width: 120px;
                height: 100px;
            }

            #test4 {
                background-color: #000;
                width: 120px;
                height: 100px;
            }

            #test5 {
                background-color: #333;
                padding: 5px;
                width: 400px;
                height: 400px;
            }

            #test6 {
                background-color: #666;
                padding: 5px;
                width: 250px;
                height: 250px;
            }

            #test7 {
                background-color: #000;
                padding: 5px;
                width: 100px;
                height: 100px;
            }

            #forceScroll {
                clear: both;
                height: 1000px;
            }

            #logger {
                position: absolute;
                top: 100px;
                left: 0;
                width: 480px;
                height: 310px;
                overflow: auto;
                z-index: 100;
            }

            #logger p {
                color: #000;
                padding: 2px;
                border-bottom: 1px solid #ccc;
                margin: 0;
            }

            #logger p:nth-child(even) {
                background-color: #ffffe8;
            }

            #logger p:nth-child(10n) {
                border-bottom-color: #000;
            }
        </style>

        <script>
            (function() {
                var verMatch = /v=([\w\.]+)/.exec(location.search),
                    version = verMatch && verMatch[1],
                    src;
                if (version)
                    src = 'code.jquery.com/jquery-' + version;
                else
                    src = 'code.jquery.com/jquery-git';
                document.write('<script src="http://' + src + '.js"><\/script>');
            })();
        </script>
        <script>
            $(function() {
                $('#userAgent').html(navigator.userAgent);
                $('#jqueryVersion').html($.fn.jquery);

                var loghandle = function(event, delta) {
                    var o = '', id = event.currentTarget.id || event.currentTarget.nodeName;

                    o = '#' + id + ':';

                    if (delta > 0)
                        o += ' up (' + delta + ')';
                    else if (delta < 0)
                        o += ' down (' + delta + ')';

                    if (event.deltaY > 0)
                        o += ' north (' + event.deltaY + ')';
                    else if (event.deltaY < 0)
                        o += ' south (' + event.deltaY + ')';

                    if (event.deltaX > 0)
                        o += ' east (' + event.deltaX + ')';
                    else if (event.deltaX < 0)
                        o += ' west (' + event.deltaX + ')';

                    o += ' deltaFactor (' + event.deltaFactor + ')';

                    log( o );
                };

                $(document)
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                    });

                $('#test1')
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        log('pageX: ' + event.pageX + ' pageY: ' + event.pageY );
                    });

                $('#test2')
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        return false; // prevent default
                    });

                $('#test3')
                    .hover(function() { log('#test3: mouseover'); }, function() { log('#test3: mouseout'); })
                    .mousewheel(function() {
                        log('#test3: I should not have been logged');
                    })
                    .unmousewheel();

                var testRemoval = function() {
                    log('#test4: I should not have been logged');
                };

                $('#test4')
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        return false;
                    })
                    .mousewheel(testRemoval)
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        return false;
                    })
                    .unmousewheel(testRemoval);

                $('#test5')
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        event.stopPropagation();
                        event.preventDefault();
                    });

                $('#test6')
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        event.stopPropagation();
                        event.preventDefault();
                    });

                $('#test7')
                    .mousewheel(function(event, delta) {
                        loghandle(event, delta);
                        event.preventDefault();
                    });

                function log(msg) {
                    $('#logger').append('<p>' + msg + '<\/p>')[0].scrollTop = 999999;
                }
            });
        </script>
        <script src="../jquery.mousewheel.js"></script>
    </head>
    <body>
        <h1 id="banner">jQuery mousewheel.js Test with jQuery <span id="jqueryVersion"></span></h1>
        <h2 id="userAgent"></h2>

        <ul>
            <li><strong>Test1</strong> is just using the plain on <code>mousewheel()</code> with a function passed in and does not prevent default. (Also logs the value of <code>pageX</code> and <code>pageY</code> event properties.)</li>
            <li><strong>Test2</strong> should prevent the default action.</li>
            <li><strong>Test3</strong> should only log a <code>mouseover</code> and <code>mouseout</code> event. Testing <code>unmousewheel()</code>.</li>
            <li><strong>Test4</strong> has two handlers.</li>
            <li><strong>Test5</strong> is like Test2 but has children. The children should not scroll until mousing over them.</li>
            <li><strong>Test6</strong> is like Test5 but should not scroll children or parents.</li>
            <li><strong>Test7</strong> is like Test6 but has no children. It will propagate the event and scroll test 6 as well.</li>
        </ul>


        <div id="stage">
            <div id="test1"><p>Test1</p></div>
            <div id="test2"><p>Test2</p></div>
            <div id="test3"><p>Test3</p></div>
            <div id="test4"><p>Test4</p></div>
            <div id="test5">
                <p>Test5</p>
                <div id="test6">
                    <p>Test6</p>
                    <div id="test7"><p>Test7</p></div>
                </div>
            </div>
            <div id="logger"></div>
        </div>

        <div id="forceScroll"></div>
    </body>
</html>
